내부에 숨겨진 언어
러스트에는 비밀이 있습니다. 실제로는 한 가지 언어 속에 두 가지 언어가 존재합니다. 안전한 러스트는 당신의 보호자지만, 러스트 컴파일러는 본질적으로 보수적입니다. 그것은 엄격한 철학을 따릅니다: 단 하나의 위험한 프로그램을 우연히 허용하는 것보다, 유효하고 안전한 프로그램을 거부하는 것이 낫다고 생각합니다. 이로 인해 하드웨어가 할 수 있는 일과 컴파일러가 증명할 수 있는 일이 사이에 격차가 생깁니다.
엄격한 현실
컴파일러를 엄격한 게이트키퍼처럼 상상해 보세요. 우리의 코드 예제에서 매치 가드 if y 전체 패턴 그룹에 적용됩니다 (4 | 5 | 6). 이러한 엄격한 우선순위 는 빌로우 체커(소유권 검사기)의 작동 방식을 반영합니다. 메모리에 대해 전역적이고 양보 없는 규칙을 적용합니다. 하지만 기반의 컴퓨터 하드웨어는 본질적으로 안전하지 않습니다; 소유권이나 수명 개념을 이해하지 못합니다. 고성능 도구를 구축하기 위해, 예를 들어 split_at_mut와 같은 도구를 만들기 위해서는 우리는 안전하지 않은 러스트 ‘탈출구’로 들어가야 합니다. 이는 기술적으로 타당하지만 컴파일러의 정적 분석으로는 논리적으로 너무 복잡한 작업을 수행하기 위함입니다.
빨간 원과 초록 원 사이의 간격은 안전하지 않은 러스트가 존재하는 곳입니다. 정적 분석이 실패했을 때, 하드웨어의 최대 잠재력을 발휘할 수 있게 해줍니다.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>